package com.wicket.okrbff.biz.service.dto.common;


import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;

/**
 * @desc BffOrgDeptPositionDto
 * @使用场景
 */
@Data
public class BffOrgDeptPositionDto implements Serializable {

    /**
     * 职务ID:
     */
    @NotNull(message = "职务ID不能为空")
    @ApiModelProperty("职务ID")
    private String positionId;

    /**
     * 所属实例类型编码:
     */
    @NotNull(message = "所属实例类型编码不能为空")
    @ApiModelProperty("所属实例类型编码")
    private String orgTypeCode;

    /**
     * 所属对象实例ID:
     */
    @NotNull(message = "所属对象实例ID不能为空")
    @ApiModelProperty("所属对象实例ID")
    private String orgEntityId;

    /**
     * 组织ID:
     */
    @ApiModelProperty("组织ID")
    private String organizationId;

    /**
     * 排序:
     */
    @ApiModelProperty("排序")
    private Long orderNumber;
    /**
     * 组织名称:
     */
    @ApiModelProperty("组织名称")
    private String organizationName;
    /**
     * 组织编号:
     */
    @ApiModelProperty("组织编号")
    private String organizationNumber;
    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;
    /**
     * 个人账号ID:
     */
    @ApiModelProperty("个人账号ID")
    private String userId;
    /**
     * 真实姓名:
     */
    @ApiModelProperty("真实姓名")
    private String idCardName;
    /**
     * 用户昵称:
     */
    @ApiModelProperty("用户昵称")
    private String nickName;
    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;
    /**
     * 组织职务关系ID:
     */
    @ApiModelProperty("组织职务关系ID")
    private String orgPositionRelationshipId;
    /**
     * 关联职务名称ID:
     */
    @ApiModelProperty("关联职务名称ID")
    private String positionIdNameId;
    /**
     * 冗余职务名称:
     */
    @ApiModelProperty("冗余职务名称")
    private String positionIdName;
    /**
     * 职务性质:
     */
    @ApiModelProperty(" 职务性质")
    private String positionType;
    /**
     * 职务级别ID:
     */
    @ApiModelProperty("职务级别ID")
    private String positionGradeId;
    /**
     * 职务级别名称:
     */
    @ApiModelProperty("职务级别名称")
    private String positionGradeName;

    @Override
  public boolean equals(Object o) {
      if (this == o) return true;
      if (o == null || getClass() != o.getClass()) return false;
      if (!super.equals(o)) return false;
      BffOrgDeptPositionDto that = (BffOrgDeptPositionDto) o;
      return  positionId == that.positionId&&orgTypeCode == that.orgTypeCode&&orgEntityId == that.orgEntityId&&organizationId == that.organizationId&&orderNumber == that.orderNumber&&organizationName == that.organizationName&&organizationNumber == that.organizationNumber&&operationInductionId == that.operationInductionId&&userId == that.userId&&idCardName == that.idCardName&&nickName == that.nickName&&operateTime == that.operateTime&&orgPositionRelationshipId == that.orgPositionRelationshipId&&positionIdNameId == that.positionIdNameId&&positionIdName == that.positionIdName&&positionType == that.positionType&&positionGradeId == that.positionGradeId&&positionGradeName == that.positionGradeName;
    }

    @Override
  public int hashCode() {
      return Objects.hash(super.hashCode(), positionId,orgTypeCode,orgEntityId,organizationId,orderNumber,organizationName,organizationNumber,operationInductionId,userId,idCardName,nickName,operateTime,orgPositionRelationshipId,positionIdNameId,positionIdName,positionType,positionGradeId,positionGradeName);
    }

}
